<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			function ListNode(val, next) {
				this.val = (val === undefined ? 0 : val)
				this.next = (next === undefined ? null : next)
			}
			let list1 = new ListNode(1,
				new ListNode(3,
					new ListNode(5)));
			let list2 = new ListNode(1,
				new ListNode(2,
					new ListNode(4)));
			var mergeTwoLists = function(l1, l2) {
			    const prehead = new ListNode(-1);
			    let prev = prehead;
			    while (l1 != null && l2 != null) {
			        if (l1.val <= l2.val) {
			            prev.next = l1;
			            l1 = l1.next;
			        } else {
			            prev.next = l2;
			            l2 = l2.next;
			        }
			        prev = prev.next;
			    }
			    // 合并后 l1 和 l2 最多只有一个还未被合并完，我们直接将链表末尾指向未合并完的链表即可
			    prev.next = l1 === null ? l2 : l1;
			    return prehead.next;
			};
			console.log(mergeTwoLists(list1, list2));
		</script>
	</body>
</html>
